﻿using System.Threading.Tasks;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Magicodes.WeChat.Application.User.WeChatUser.Dto;
using Magicodes.WeChat.User.Dto;

namespace Magicodes.WeChat.User
{
    /// <summary>
    /// 微信相关
    /// </summary>
    public interface IWeChatUserAppService : IApplicationService
    {
        /// <summary>
        /// 获取粉丝列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<WeChatUserListDto>> GetWeChatUsers(GetWeChatUsersInput input);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<GetWeChatUserForEditOutput> GetWeChatUserForEdit(string id);

        Task CreateOrUpdateWeChatUser(CreateOrUpdateWeChatUserDto input);

        Task DeleteWeChatUser(EntityDto<string> input);

        Task<WeChatUserListDto> GetWeChatUserById(string id);

        /// <summary>
        /// 根据UserId获取粉丝信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<WeChatUserListDto> GetWeChatUserByUserId(string userId);

        Task<WeChatUserListDto> BindUser(BindUserIdDto input);

        Task RemoveBind(string id);

        /// <summary>
        /// 根据用户Id获取OpenId列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<string[]> GetOpenIdsByUserIds(GetOpenIdsByUserIdsInput input);
    }
}